package org.xlp.db.xml;

import org.dom4j.Document;
import org.dom4j.Element;

import java.io.InputStream;

/**
 * 解析http协议sql配置文件处理器
 * @author xlp
 * @version 1.0
 */
public abstract class AbstractHTTPUrlSQLXmlFileHandler extends AbstractSQLXmlFileHandler{
    public AbstractHTTPUrlSQLXmlFileHandler() {}

    /**
     * 解析给定的sql配置文件
     *
     * @param sqlXmlFilePath
     * @return
     * @throws SQLXmlFileParseException 当处理失败时，则抛出该异常
     */
    @Override
    protected SQLConfigurationFileInfo doHandle(String sqlXmlFilePath) throws SQLXmlFileParseException {
        //获取xml文件文档对象
        Document document = toDocument(sqlXmlFilePath);

        // 获取根元素
        Element rootElement = document.getRootElement();

        SQLConfigurationFileInfo sqlConfigurationFileInfo = new SQLConfigurationFileInfo();
        //设置当前解析的文件描述信息
        sqlConfigurationFileInfo.setFileDescription(sqlXmlFilePath);

        //处理sqls元素
        sqlConfigurationFileInfo.setSqlsElementInfos(getSqlsElementInfos(rootElement));

        //处理file元素
        sqlConfigurationFileInfo.setSqlConfigurationFilePaths(getFilePaths(rootElement));

        return sqlConfigurationFileInfo;
    }

    /**
     * 更据协议获取xml文档
     * @param sqlXmlFilePath
     * @return
     */
    protected abstract Document toDocument(String sqlXmlFilePath);

    /**
     * 把指定的文件描述路径转换成文件输入流
     *
     * @param sqlXmlFilePath
     * @return
     */
    @Override
    protected InputStream toInputStream(String sqlXmlFilePath) {
        return null;
    }
}
